home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995…tember: Reference Library / Dev.CD Sep 95 RL / Dev.CD Sep 95 RL.toast / mac / Technical Documentation / develop / develop Issue 12 code / Components / Sources / PPCGlue.c < prev   
Encoding:
C/C++ Source or Header  |  1994-12-02  |  4.5 KB  |  146 lines  |  [TEXT/MPCC]

  1. /*
  2. *
  3. *    PPCGlue.c -- based on the Quicktime Tech Note 05
  4. *    
  5. *    Mark Anderson
  6. *    metrowerks
  7. *    12/1/94
  8. *
  9. */
  10.  
  11. #include "MathComponent.h"
  12. #include "MathComponentPrivate.h"
  13. #include "MoMathComponent.h"
  14. #include "MoMathComponentPrivate.h"
  15. #include "NuMathComponentPrivate.h"
  16. #include <Menus.h>
  17. #include <Windows.h>
  18. #include <QuickDraw.h>
  19. #include <OSEvents.h>
  20. #include <Resources.h>
  21. #include <Desk.h>
  22. #include <Fonts.h>
  23. #include <ToolUtils.h>
  24.  
  25.  
  26. enum {
  27.     uppCallComponentProcInfo = kPascalStackBased
  28.         | RESULT_SIZE(kFourByteCode)
  29.         | STACK_ROUTINE_PARAMETER(1, kFourByteCode)
  30. };
  31.  
  32. pascal    ComponentResult    DoDivide    (MathComponent    mathInstance,
  33.                                      short            numerator,
  34.                                      short            denominator,
  35.                                      short            *result) 
  36. {
  37. #define kDoDivideParamSize     (sizeof (DoDivideParams))
  38. #ifdef powerc
  39. #pragma options align=mac68k
  40. #endif
  41.    struct DoDivideParams {
  42.         short            *result;
  43.         short            denominator;
  44.          short            numerator;                       
  45.    };
  46.    typedef struct DoDivideParams DoDivideParams;
  47.    struct DoDivideGluePB {
  48.     unsigned char        componentFlags;    /* Flags - set to zero */
  49.     unsigned char        componentParamSize;    /* Size of the params struct */
  50.     short                componentWhat;    /* The component request selector */
  51.     DoDivideParams        params;        /* The parameters, see above */
  52.     ComponentInstance    instance;        /* This component instance */
  53.    };
  54.    typedef struct DoDivideGluePB DoDivideGluePB;
  55. #ifdef powerc
  56. #pragma options align=reset
  57. #endif
  58.    DoDivideGluePB myDoDivideGluePB;
  59.    myDoDivideGluePB.componentFlags = 0;
  60.    myDoDivideGluePB.componentParamSize = kDoDivideParamSize;
  61.    myDoDivideGluePB.componentWhat = kDoDivideSelect;
  62.    myDoDivideGluePB.params.result = result;
  63.    myDoDivideGluePB.params.denominator = denominator;
  64.    myDoDivideGluePB.params.numerator = numerator;
  65.    myDoDivideGluePB.instance = (ComponentInstance)mathInstance;
  66.    return CallUniversalProc(CallComponentUPP,
  67.         uppCallComponentProcInfo,  &myDoDivideGluePB);
  68. }
  69.  
  70. pascal    ComponentResult    DoMultiply    (MathComponent    mathInstance,
  71.                                      short            firstNum,
  72.                                      short            secondNum,
  73.                                      short            *result) 
  74. {
  75. #define kDoMultiplyParamSize     (sizeof (DoMultiplyParams))
  76. #ifdef powerc
  77. #pragma options align=mac68k
  78. #endif
  79.    struct DoMultiplyParams {
  80.         short            *result;
  81.         short            secondNum;
  82.          short            firstNum;                       
  83.    };
  84.    typedef struct DoMultiplyParams DoMultiplyParams;
  85.    struct DoMultiplyGluePB {
  86.     unsigned char        componentFlags;    /* Flags - set to zero */
  87.     unsigned char        componentParamSize;    /* Size of the params struct */
  88.     short                componentWhat;    /* The component request selector */
  89.     DoMultiplyParams    params;        /* The parameters, see above */
  90.     ComponentInstance    instance;        /* This component instance */
  91.    };
  92.    typedef struct DoMultiplyGluePB DoMultiplyGluePB;
  93. #ifdef powerc
  94. #pragma options align=reset
  95. #endif
  96.    DoMultiplyGluePB myDoMultiplyGluePB;
  97.    myDoMultiplyGluePB.componentFlags = 0;
  98.    myDoMultiplyGluePB.componentParamSize = kDoMultiplyParamSize;
  99.    myDoMultiplyGluePB.componentWhat = kDoMultiplySelect;
  100.    myDoMultiplyGluePB.params.result = result;
  101.    myDoMultiplyGluePB.params.secondNum = secondNum;
  102.    myDoMultiplyGluePB.params.firstNum = firstNum;
  103.    myDoMultiplyGluePB.instance = (ComponentInstance)mathInstance;
  104.    return CallUniversalProc(CallComponentUPP,
  105.         uppCallComponentProcInfo,  &myDoMultiplyGluePB);
  106. }
  107.  
  108. pascal    ComponentResult    DoAdd    (MathComponent    mathInstance,
  109.                                  short            firstNum,
  110.                                  short            secondNum,
  111.                                  short            *additionResult)
  112.  
  113. {
  114. #define kDoAddParamSize     (sizeof (DoAddParams))
  115. #ifdef powerc
  116. #pragma options align=mac68k
  117. #endif
  118.    struct DoAddParams {
  119.         short            *additionResult;
  120.         short            secondNum;
  121.          short            firstNum;                       
  122.    };
  123.    typedef struct DoAddParams DoAddParams;
  124.    struct DoAddGluePB {
  125.     unsigned char        componentFlags;    /* Flags - set to zero */
  126.     unsigned char        componentParamSize;    /* Size of the params struct */
  127.     short                componentWhat;    /* The component request selector */
  128.     DoAddParams            params;        /* The parameters, see above */
  129.     ComponentInstance    instance;        /* This component instance */
  130.    };
  131.    typedef struct DoAddGluePB DoAddGluePB;
  132. #ifdef powerc
  133. #pragma options align=reset
  134. #endif
  135.    DoAddGluePB myDoAddGluePB;
  136.    myDoAddGluePB.componentFlags = 0;
  137.    myDoAddGluePB.componentParamSize = kDoAddParamSize;
  138.    myDoAddGluePB.componentWhat = kDoAddSelect;
  139.    myDoAddGluePB.params.additionResult = additionResult;
  140.    myDoAddGluePB.params.secondNum = secondNum;
  141.    myDoAddGluePB.params.firstNum = firstNum;
  142.    myDoAddGluePB.instance = (ComponentInstance)mathInstance;
  143.    return CallUniversalProc(CallComponentUPP,
  144.         uppCallComponentProcInfo,  &myDoAddGluePB);
  145. }
  146.